const mongoose = require("mongoose");
mongoose.connect("mongodb://127.0.0.1:27017/dahaida",{
	serverSelectionTimeoutMs:2000
}).then(()=>{
	// 1- 指定操作数据库的集合结构
	const schema = new mongoose.Schema({
		username:{
			type:String,// 类型必须是字符串
			required:true,// 不允许省略
			unique:true// 不允许重复
		},
		age:{
			type:Number,// 类型必须是数字
			default:100,// 默认值为100
		},
		hobby:[Number],// 数组的元素必须是数字
		qita:{
			type:mongoose.Schema.Types.Mixed// 不限制类型
		}
	},{
		versionKey:false,// false代表不会为文档增加默认属性__v
	});
	// 2- 创建一个model,可以通过该函数的返回值操作mongodb数据库
	// 第一个参数是集合的名字，第二个参数是schema,第三个参数是最终的集合名字
	const model = mongoose.model("userList",schema,"userList");
	// 1- 无条件查找
	// model.find().then(value=>{
	// 	console.log(value);
	// })

	// 2- 条件查找
	// model.find({age:90}).then(value=>{
	// 	console.log(value);
	// })

	// 3- 根据ID进行搜索
	// 注意：find返回的成功值永远都是一个数组
	// model.find({_id:'6852582419f0f3d96541d996'}).then(value=>{
	// 	console.log(value);
	// })

	// 返回的是一条文档
	// model.findOne({_id:'6852582419f0f3d96541d996'}).then(value=>{
	// 	console.log(value);
	// })

	// 根据ID进行搜索，返回的是一条文档
	// model.findById("6852582419f0f3d96541d996").then(value=>{
	// 	console.log(value);
	// })

	// 4
	// model.find().sort({age:-1}).skip(3).limit(2).then(value=>{
	// 	console.log(value)
	// })

	// 5- 获取满足条件的文档数量
	model.countDocuments({age:18}).then(value=>{
		console.log(value);
	})
}).catch(err=>{
	console.log("连接失败",err);
})